iT邦幫忙

2023 iThome 鐵人賽

DAY 17
0
自我挑戰組

我的日常學習雜記與筆記整理系列 第 19

Day - 19 函式(三) 函式宣告 - 規則和限制

  • 分享至 

  • xImage
  •  

函式宣告述句的規則和限制

  1. 可以在程式碼的頂層定義函式。

程式碼的頂層(top-level JavaScript code): 指不在任何函式、迴圈或其他結構內部的程式碼; 也就是在 JavaScript 檔案或 <script> 標籤中直接寫的程式碼。

var x = 100; // 程式碼的頂層 top-level JavaScript code

function funcName(){
	var x = 10;  // not top-level JavaScript code
}
  1. 函式宣告述句(Function declaration statements)在巢狀函式中,只能出現在其外層函式(function outerFunc)的最上面。
  2. 不能出現在if...述句、while迴圈、或其他任何的述句中。
  3. 不同執行環境的JavaScript中,也有其他JavaScript 環境可以將函式宣告寫在任何述句可以出現的位置,所以當函式宣告放在其他述句中,又遇到各種不同的 JavaScript 執行環境的時候,就會有問題(可能會以不同的方式處理這種情況)。
// 巢狀函式
function outerFunc(a, b){
	function innerFunc(x){ 
		return x * x;
	}
	return Math.sqrt(innerFunc(a) + innerFunc(b));
}

console.log(outerFunc(3,4)); // 5

函式宣告述句與函式定義運算式的差別

兩者都會建立新的函式物件

函式宣告述句(Function declaration statements)
function funcname ( [ argl [, arg2 [... , argn ]]]){
	// statements
}
  • 會包含函式的名稱 : 就像是使用var宣告的變數,將函式名稱funcname宣告為變數並把新建立的函式物件指定給該變數。
  • 因為變數提升(hoisted)的關係,函式的名稱以及其函式的主體都會被提升到script或函式的頂端。
函式定義運算式(function definition expressions)
var triangle = function(b, h) {
	return b * h / 2;
}
  • 變數宣告也會因為變數提升(hoisted)的關係,被提升到script或函式的頂端,但指定的變數初始值的程式碼還會在原來撰寫的位置。

參考資源


上一篇
Day - 18 函式(二) 宣告述句
下一篇
Day - 20 函式(四) 調用 - Function, Method
系列文
我的日常學習雜記與筆記整理30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言